package br.com.sgdee.mb;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.sgdee.bo.remote.PessoaBORemote;
import br.com.sgdee.entidades.acesso.Pessoa;
import br.com.sgdee.mb.generic.GenericoBean;
import br.com.sgdee.util.Util;

@ManagedBean
@ViewScoped
public class PessoaLoginMB extends GenericoBean {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -901365032652638109L;
	
	
	public static String PATH_INICIO_LOGIN = "login";
	
	
	private Pessoa pessoaLogada;
	
	@EJB private PessoaBORemote pessoaBO;
	
	
	/**
	 * Método que verfica se o usuário está logado, caso contrário, redirecionará
	 * para a página de login
	 * 
	 * @return
	 */
	public String init() {
		
		if (Util.getUserNameLoginJAAS() == null) {
			
			Util.getHttpServletRequest().getSession().invalidate();
		}
		
		return "inicio";
	}
	
	public String initInicio() {
		
		if (Util.getUserNameLoginJAAS() == null) {
			
			Util.getHttpServletRequest().getSession().invalidate();
		}
		
		return "pretty:inicio";
	}
	
	
	/**
	 * Comando que permite sair do sistema
	 * 
	 * @return
	 */
	public String comandoLogout() {
		
		Util.getHttpServletRequest().getSession().invalidate();
		
		return PATH_INICIO_LOGIN;
	}
	
	
	/**
	 * Método que retorna o usuário que fez acesso ao sistema
	 * 
	 * @return {@link Pessoa} pessoaLogada
	 */
	public Pessoa getPessoaLogada() {
		
		Object pessoaObj = Util.getHttpServletRequest().getSession().getAttribute("login");
		
		if (pessoaObj == null && Util.getUserNameLoginJAAS() != null) {
			
			// recuperar pessoa a partir do email utilizado para o login do sistema
			pessoaLogada = pessoaBO.recuperarPessoaLogin(Util.getUserNameLoginJAAS(), null);
			
			Util.getHttpServletRequest().getSession().setAttribute("login", pessoaLogada);
		} else {
			
			pessoaLogada = (Pessoa) Util.getHttpServletRequest().getSession().getAttribute("login");
		}
		
		return pessoaLogada;
	}
}
